package com.xuecheng.media.service;


import com.xuecheng.media.model.dto.UploadFileParamsDto;
import com.xuecheng.media.model.po.MediaFiles;
import com.xuecheng.model.RestResponse;

import java.io.File;

public interface BigFilesService {

    /**
     * 检查文件是否存在
     * @param fileMd5  文件的MD5
     * @return
     */
    public RestResponse<Boolean> checkFile(String fileMd5);

    /**
     * 检查分块是否存在
     * @param fileMd5  文件的MD5
     * @param chunk   分块序号
     * @return
     */
    public RestResponse<Boolean> checkChunk(String fileMd5,int chunk);

    /**
     * 上传文件
     * @param fileMd5  文件MD5值
     * @param chunk   分块序号
     * @param localChunkFilePath  分块文件本地路径
     * @return
     */
    public RestResponse uploadChunk(String fileMd5,int chunk,String localChunkFilePath);


    /**
     * 合并分块
     * @param companyId  机构id
     * @param fileMd5  文件MD5值
     * @param chunkTotal   分块总和
     * @param uploadFileParamsDto  文件信息
     * @return
     */
    public RestResponse mergechunks(Long companyId, String fileMd5, int chunkTotal, UploadFileParamsDto uploadFileParamsDto);


    /**
     * 将文件信息添加到数据库
     * @param companyId  机构id
     * @param fileMd5   文件md5值
     * @param uploadFileParamsDto   上传文件信息
     * @param bucket_files  桶
     * @param objectName  对象名称
     */
     RestResponse addMediaFilesToDb(Long companyId, String fileMd5, UploadFileParamsDto uploadFileParamsDto, String bucket_files, String objectName);

    /**
     * 从minio下载文件
     * @param bucketVideofiles  桶
     * @param mergeFilePath  对象名称
     */
    public File downloadFileFromMinio(String bucketVideofiles, String mergeFilePath);
}
